--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx
+ version="1.0"
+ creator="GPSBabel - http://www.gpsbabel.org"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://www.topografix.com/GPX/1/0"
+ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
+<time>1970-01-01T00:00:00Z</time>
+<bounds minlat="40.000000000" minlon="-106.300000000" maxlat="50.200000000" maxlon="-105.100000000"/>
+<trk>
+ <name>track one</name>
+<trkseg>
+<trkpt lat="40.000000000" lon="-105.100000000">
+</trkpt>
+<trkpt lat="40.100000000" lon="-105.200000000">
+</trkpt>
+<trkpt lat="40.200000000" lon="-105.300000000">
+</trkpt>
+</trkseg>
+<trkseg>
+<trkpt lat="50.000000000" lon="-106.100000000">
+</trkpt>
+<trkpt lat="50.100000000" lon="-106.200000000">
+</trkpt>
+<trkpt lat="50.200000000" lon="-106.300000000">
+</trkpt>
+</trkseg>
+</trk>
+<trk>
+ <name>track two</name>
+<trkseg>
+<trkpt lat="40.000000000" lon="-105.100000000">
+</trkpt>
+</trkseg>
+<trkseg>
+<trkpt lat="40.100000000" lon="-105.200000000">
+</trkpt>
+<trkpt lat="40.200000000" lon="-105.300000000">
+</trkpt>
+<trkpt lat="50.000000000" lon="-106.100000000">
+</trkpt>
+<trkpt lat="50.100000000" lon="-106.200000000">
+</trkpt>
+<trkpt lat="50.200000000" lon="-106.300000000">
+</trkpt>
+</trkseg>
+</trk>
+<trk>
+ <name>track three</name>
+<trkseg>
+<trkpt lat="40.000000000" lon="-105.100000000">
+</trkpt>
+<trkpt lat="40.100000000" lon="-105.200000000">
+</trkpt>
+<trkpt lat="40.200000000" lon="-105.300000000">
+</trkpt>
+<trkpt lat="50.000000000" lon="-106.100000000">
+</trkpt>
+<trkpt lat="50.100000000" lon="-106.200000000">
+</trkpt>
+</trkseg>
+<trkseg>
+<trkpt lat="50.200000000" lon="-106.300000000">
+</trkpt>
+</trkseg>
+</trk>
+</gpx>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx
+ version="1.0"
+ creator="GPSBabel - http://www.gpsbabel.org"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://www.topografix.com/GPX/1/0"
+ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
+<time>1970-01-01T00:00:00Z</time>
+<bounds minlat="40.000000000" minlon="-106.300000000" maxlat="50.200000000" maxlon="-105.100000000"/>
+<trk>
+ <name>track one</name>
+<trkseg>
+<trkpt lat="50.200000000" lon="-106.300000000">
+</trkpt>
+<trkpt lat="50.100000000" lon="-106.200000000">
+</trkpt>
+<trkpt lat="50.000000000" lon="-106.100000000">
+</trkpt>
+</trkseg>
+<trkseg>
+<trkpt lat="40.200000000" lon="-105.300000000">
+</trkpt>
+<trkpt lat="40.100000000" lon="-105.200000000">
+</trkpt>
+<trkpt lat="40.000000000" lon="-105.100000000">
+</trkpt>
+</trkseg>
+</trk>
+<trk>
+ <name>track two</name>
+<trkseg>
+<trkpt lat="50.200000000" lon="-106.300000000">
+</trkpt>
+<trkpt lat="50.100000000" lon="-106.200000000">
+</trkpt>
+<trkpt lat="50.000000000" lon="-106.100000000">
+</trkpt>
+<trkpt lat="40.200000000" lon="-105.300000000">
+</trkpt>
+<trkpt lat="40.100000000" lon="-105.200000000">
+</trkpt>
+</trkseg>
+<trkseg>
+<trkpt lat="40.000000000" lon="-105.100000000">
+</trkpt>
+</trkseg>
+</trk>
+<trk>
+ <name>track three</name>
+<trkseg>
+<trkpt lat="50.200000000" lon="-106.300000000">
+</trkpt>
+</trkseg>
+<trkseg>
+<trkpt lat="50.100000000" lon="-106.200000000">
+</trkpt>
+<trkpt lat="50.000000000" lon="-106.100000000">
+</trkpt>
+<trkpt lat="40.200000000" lon="-105.300000000">
+</trkpt>
+<trkpt lat="40.100000000" lon="-105.200000000">
+</trkpt>
+<trkpt lat="40.000000000" lon="-105.100000000">
+</trkpt>
+</trkseg>
+</trk>
+</gpx>
#define MYNAME "Route reversal filter"
+static int prev_new_trkseg;
+
static
arglist_t reverse_route_args[] = {
ARG_TERMINATOR
};
+/*
+ * reverse_route_wpt fixes up the waypoint flag new_trkseg
+ */
+static void reverse_route_wpt(const waypoint* waypointp)
+{
+
+ /* Cast away const-ness */
+ waypoint* wpp = (waypoint *) waypointp;
+
+ int curr_new_trkseg;
+
+ curr_new_trkseg = waypointp->wpt_flags.new_trkseg;
+ wpp->wpt_flags.new_trkseg = prev_new_trkseg;
+ prev_new_trkseg = curr_new_trkseg;
+}
+
void
reverse_route_head(const route_head *rte)
{
route_reverse(rte);
+ prev_new_trkseg = 1;
}
void
reverse_route_process(void)
{
- track_disp_all(reverse_route_head, NULL, NULL);
+ track_disp_all(reverse_route_head, NULL, reverse_route_wpt);
route_disp_all(reverse_route_head, NULL, NULL);
}
compare ${REFERENCE}/track/trackfilter_faketime.gpx ${TMPDIR}/ft.gpx
gpsbabel -t -i unicsv -f ${REFERENCE}/track/trackfilter_faketime.txt -x track,faketime=f20100506060000+5 -o gpx -F ${TMPDIR}/ftf.gpx
compare ${REFERENCE}/track/trackfilter_faketime_forced.gpx ${TMPDIR}/ftf.gpx
+
+# reverse the track
+gpsbabel -t -i gpx -f ${REFERENCE}/track/trk_reverse_test-fwd.gpx -x reverse -o gpx -F ${TMPDIR}/trk_reverse_test-rev.gpx
+compare ${REFERENCE}/track/trk_reverse_test-rev.gpx ${TMPDIR}/trk_reverse_test-rev.gpx